const dayjs = require("dayjs");
// import dayjs from 'dayjs

Page({
  data: {
    name: '',
    gender: 1,
    mobile: '',
    houseId: '',
    visitDate: '',
    currentDate: Date.now(),
    // maxDate: Date.now() + 3 * 24 * 60 * 60 * 1000,
    // maxData: new Date(2023, 4, 14).getTime(),
    maxData: 0,
    dateLayerVisible: false,
    houseLayerVisible: false,
    houseList: [
      { id: 111, name: '北京西三旗花园1号楼 101' },
      { name: '北京东村家园3号楼 302' },
      { name: '北京育新花园3号楼 703' },
      { name: '北京天通苑北苑8号楼 403' },
    ],
  },
  onLoad() {
    this.getHouseList()
    this.setData({
      // maxData: new Date(2023, 3, 14).getTime()
      maxData: Date.now() + 3 * 24 * 60 * 60 * 1000
    })
  },
  async getHouseList() {
    const res = await wx.$http.get('/room')
    const arr = res.data.map(item => ({
      id: item.id,
      name: item.point + item.building + item.room
    }))
    this.setData({
      houseList: arr
    })
  },
  // 时刻注意 js里面变量的值， 和页面上渲染的值 ----- 是两个值（改bug方向）
  onSelect(e) {
    console.log(e);
    console.log(e.detail);
    this.setData({
      houseId: e.detail.id,
      houseInfo: e.detail.name
    })
  },
  dateConfirm(e) {
    console.log(e);
    // 日期有两个变量， 一个变量是当前日期组件需要的 时间戳，一个变量是后端需要2023-04-11 这个格式的字符串
    console.log(e.detail);
    this.setData({
      currentDate: e.detail,
      visitDate: dayjs(e.detail).format('YYYY-MM-DD')
    })
    this.closeDateLayer()
  },
  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },
  // 校验房屋是否选中
  verifyHouse() {
    const valid = !!this.data.houseId
    if (!valid) wx.$utils.toast('请选择房屋')
    return valid
  },
  async goPassport() {
    // 这个回调函数是 发起请求的，发请求之前先对几个字段进行校验
    // 前端校验仅仅只是 减少http请求，减轻服务器的压力---- 不要说前端校验有什么安全性
    // 安全都是在后端做的， 基本上前端的校验后端也有对应的校验。 工作里面写代码，你可以问后端，关于手机号，姓名，房屋信息，你是怎么写校验规则的,然后和后端写一样的正则，保持前后端一致（大公司里面，一般会有测试人员写测试用例，会告诉前后端，这个校验规则怎么写）
    if (!this.verifyHouse()) return

    // 发提交请求 数据赋值
    const res = await wx.$http.post('/visitor', {
      "houseId": this.data.houseId,
      "name": this.data.name,
      "gender": this.data.gender,
      "mobile": this.data.mobile,
      "visitDate": this.data.visitDate,
    })
    console.log(res);
    if (res.code !== 10000) return wx.$utils.toast('新增访客信息请求失败')
    wx.reLaunch({
      url: '/visitor_pkg/pages/passport/index?id=' + res.data.id,
    })
  },
})
